"""
函数参数
    形式参数
"""


def fun01(a=4, b=5, c=9, d=2):
    print(a)  # 1.缺省（默认）参数：如果实参不提供，可以使用默认值
    print(b)
    print(c)
    print(d)


fun01(b=0)
print("*" * 80)


# 关键字实参+缺省形参：调用者可以随意传递参数


def fun02(a, b, c, d):  # 2.位置形参
    print(a)
    print(b)
    print(c)
    print(d)


fun02(1, 3, 5, 7)
print("*" * 80)


def fun03(*args):  # 3.星号元组形参：*将所有实参合并为一个元祖
    print(args)


fun03(1, "3")
print("*" * 80)


def fun4(a, *args, b):  # def fun(a, *args, *, b):
    print(a)  # 4.（命名）关键字形参：在星号元组以后的位置形参
    # 目的：要求实参必须使用关键字实参
    print(args)
    print(b)


fun4(1, b=9)
print("*" * 80)


def fun06(**a):  # 5.双星号字典形参：可以传入无数关键字实参
    # 目的是将实参合并为字典
    print(a)


fun06(a=6, b=9)
print("*" * 80)


def fun07(a, b, *args, c, d, **kwargs):
    print(a, b, args, c, d, kwargs)


fun07(1, 2, 4, 5, 6, c=8, d=5, g=0)

a = 10
b = 10

print(a == b)
print(a is b)
print(id(a), id(b))
